/*
 * DIM-SUM操作系统 - 中断寄存器栈
 *
 * Copyright (C) 2024 国科础石(重庆)软件有限公司
 *
 * 作者: Zicheng Hu <huzicheng@kernelsoft.com>
 *
 * License terms: GNU General Public License (GPL) version 3
 * 
 */

#ifndef _ASM_GENERIC_IRQ_REGS_H
#define _ASM_GENERIC_IRQ_REGS_H

#include <dim-sum/percpu.h>

struct exception_spot;
/**
 * 中断栈寄存器，保存上次中断触发时的中断栈信息。
 */
DECLARE_PER_CPU(struct exception_spot *, __irq_regs);

static inline struct exception_spot *get_irq_regs(void)
{
	return __get_cpu_var(__irq_regs);
}

static inline struct exception_spot *set_irq_regs(struct exception_spot *new_regs)
{
	struct exception_spot *old_regs;

	old_regs = __get_cpu_var(__irq_regs);
	__get_cpu_var(__irq_regs) = new_regs;
	return old_regs;
}

#endif /* _ASM_GENERIC_IRQ_REGS_H */
